home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MACD 5
/
MACD 5.bin
/
workbench
/
blankery
/
blitzblank
/
sources
/
bb.lines
< prev
next >
Wrap
Text File
|
1993-09-17
|
7KB
|
323 lines
;BB.Lines - Blanker-module for BlitzBlank
;Copyright 1993 by Thomas Boerkel
CloseEd
NoCli
NEWTYPE.line
x1.w
y1
x2
y2
c
End NEWTYPE
NEWTYPE.spritedata
a.w
b
c
d
e
f
End NEWTYPE
NEWTYPE.tags
a.l
b
c
d
e
f
End NEWTYPE
DEFTYPE.spritedata *sprdata
DEFTYPE.SimpleSprite spr
DEFTYPE.Screen *myscreen
DEFTYPE.NewScreen newscreen
DEFTYPE.Message *msg
DEFTYPE.MsgPort *port
DEFTYPE.tags tags
DEFTYPE.l
Statement stringborder{x,y,w,h}
Wline x+1,y+h+2,x+1,y,x+w+8,y,1
Wline x+w+10,y-1,x+w+10,y+h+4,x-1,y+h+4,1
Wline x,y+h+3,x,y,1
Wline x+w+11,y-1,x+w+11,y+h+4,1
Wline x-1,y+h+3,x-1,y-1,x+w+10,y-1,2
Wline x+w+9,y,x+w+9,y+h+3,x+1,y+h+3,2
Wline x-2,y+h+4,x-2,y-1,2
Wline x+w+8,y+1,x+w+8,y+h+2,2
End Statement
al=0
Select Par$(1)
Case "BLANK"
name$="BB.BlankModule"+Chr$(0)
*port=CreateMsgPort_()
*port\mp_Node\ln_Name=&name$
*port\mp_Node\ln_Pri=1
AddPort_ *port
SetTaskPri_ FindTask_(0),Val(Par$(8))
*sprdata=AllocMem_(SizeOf.spritedata,#MEMF_CHIP|#MEMF_CLEAR)
Gosub readconfig
width=Val(Par$(2))
height=Val(Par$(3))
mode=Val(Par$(4))
monitor=Val(Par$(5))
depth=Val(Par$(6))
colors=2^depth
title$="BB.Lines.Screen"+Chr$(0)
newscreen\LeftEdge=0,0,width,height,depth
newscreen\ViewModes=0,#CUSTOMSCREEN|#SCREENBEHIND,0,&title$
tags\a=#SA_DisplayID
tags\b=$10000*monitor+mode
tags\c=0
*myscreen=OpenScreenTagList_(newscreen,tags)
If *myscreen
*vp=*myscreen\ViewPort
*rp=*myscreen\RastPort
SetRGB4_ *vp,0,0,0,0
SetRGB4_ *vp,1,15,0,0
If colors>2
SetRGB4_ *vp,2,0,0,15
SetRGB4_ *vp,3,0,15,0
If colors>4
SetRGB4_ *vp,4,0,5,10
SetRGB4_ *vp,5,15,3,8
SetRGB4_ *vp,6,15,5,15
SetRGB4_ *vp,7,5,15,8
If colors>8
SetRGB4_ *vp,8,10,5,0
SetRGB4_ *vp,9,0,15,5
SetRGB4_ *vp,10,15,7,0
SetRGB4_ *vp,11,0,7,15
SetRGB4_ *vp,12,8,15,3
SetRGB4_ *vp,13,15,10,5
SetRGB4_ *vp,14,7,0,15
SetRGB4_ *vp,15,3,8,15
If colors>16
For i=16 To colors-1
SetRGB4_ *vp,i,Rnd(13)+3,Rnd(13)+3,Rnd(13)+3
Next i
EndIf
EndIf
EndIf
EndIf
SetAPen_ *rp,0
RectFill_ *rp,0,0,width-1,height-1
ScreenToFront_ *myscreen
w=3
s=1
co=1
ch=al/colors
If ch=0 Then ch=1
Delay_ 10
VWait
ChangeSprite_ 0,spr,*sprdata
dx1=Rnd(w)+s
dy1=Rnd(w)+s
dx2=Rnd(w)+s
dy2=Rnd(w)+s
Dim li.line(al)
li(0)\x1=Rnd(width)
li(0)\y1=Rnd(height)
li(0)\x2=Rnd(width)
li(0)\y2=Rnd(height)
For i=1 To al-1
li(i)\x1=li(i-1)\x1+dx1
li(i)\y1=li(i-1)\y1+dy1
li(i)\x2=li(i-1)\x2+dx2
li(i)\y2=li(i-1)\y2+dy2
Gosub check
fdummy.f=i/ch
If fdummy=Int(i/ch)
co+1:If co>colors-1 Then co=1
EndIf
SetAPen_ *rp,co
Move_ *rp,li(i)\x1,li(i)\y1
Draw_ *rp,li(i)\x2,li(i)\y2
*msg=GetMsg_(*port)
If *msg
i=al-1
EndIf
Next i
If *msg=0
i=0
v=al-1
Repeat
SetAPen_ *rp,0
Move_ *rp,li(i)\x1,li(i)\y1
Draw_ *rp,li(i)\x2,li(i)\y2
li(i)\x1=li(v)\x1+dx1
li(i)\y1=li(v)\y1+dy1
li(i)\x2=li(v)\x2+dx2
li(i)\y2=li(v)\y2+dy2
Gosub check
fdummy.f=i/ch
If fdummy=Int(i/ch)
co+1:If co>colors-1 Then co=1
EndIf
SetAPen_ *rp,co
Move_ *rp,li(i)\x1,li(i)\y1
Draw_ *rp,li(i)\x2,li(i)\y2
i+1
If i>al-1
i=0
dx1=Sgn(dx1)*(Rnd(w)+s)
dy1=Sgn(dy1)*(Rnd(w)+s)
dx2=Sgn(dx2)*(Rnd(w)+s)
dy2=Sgn(dy2)*(Rnd(w)+s)
EndIf
v+1
If v>al-1 Then v=0
*msg=GetMsg_(*port)
Until *msg
EndIf
CloseScreen_ *myscreen
EndIf
FreeMem_ *sprdata,SizeOf.spritedata
RemPort_ *port
DeleteMsgPort_ *port
Case "INFO"
title$="Lines"+Chr$(0)
reqtext$="Lines - Module for BlitzBlank"+Chr$(10)
reqtext$+Chr$(169)+" 1993 by Thomas Brkel and Jrgen Denner"+Chr$(10)+Chr$(10)
reqtext$+"You see wild lines on the screen."+Chr$(10)+Chr$(10)
reqtext$+"Choose the number of lines in the config-window."+Chr$(0)
gadget$="OK"+Chr$(0)
easy.EasyStruct\es_StructSize=SizeOf.EasyStruct
easy\es_Title=&title$
easy\es_TextFormat=&reqtext$
easy\es_GadgetFormat=&gadget$
EasyRequestArgs_ 0,easy,0,0
Case "CONFIG"
*myscreen=LockPubScreen_(0)
width=*myscreen\Width
height=*myscreen\Height
font=*myscreen\Font\ta_YSize
Gosub readconfig
WbToScreen 0
BorderPens 0,0
StringGadget 0,100,25,0,0,4,40
Window 0,width/2-90,height/2-25,180,50,$100e,"Lines",1,2,0
stringborder{100,25,40,8}
WColour 2
WLocate 32,24-font
Print "Lines:"
WLocate 32,24-font+8
Print "(5-200)"
SetString 0,0,Str$(al)
ActivateString 0,0
Repeat
ev=WaitEvent
Until ev=$200 OR ev=$40
al=Val(StringText$(0,0))
Free Window 0
Gosub writeconfig
UnlockPubScreen_ 0,*myscreen
End Select
End
.check
If li(i)\x1>width-1 OR li(i)\x1<0
dx1=-dx1
li(i)\x1+2*dx1
EndIf
If li(i)\y1>height-1 OR li(i)\y1<0
dy1=-dy1
li(i)\y1+2*dy1
EndIf
If li(i)\x2>width-1 OR li(i)\x2<0
dx2=-dx2
li(i)\x2+2*dx2
EndIf
If li(i)\y2>height-1 OR li(i)\y2<0
dy2=-dy2
li(i)\y2+2*dy2
EndIf
Return
.readconfig
path$=Par$(9)
For i=10 To NumPars
path$=path$+" "+Par$(i)
Next i
If ReadFile(0,path$+"BB.Modules.config")
FileInput 0
While NOT Eof(0)
If Edit$(100)="*** Lines ***"
al=Val(Edit$(5))
EndIf
Wend
DefaultInput
CloseFile 0
EndIf
Gosub checkval
Return
.writeconfig
Gosub checkval
If ReadFile(0,path$+"BB.Modules.config")
If WriteFile(1,path$+"BB.Modules.temp")
FileInput 0
FileOutput 1
While NOT Eof(0)
f$=Edit$(100)
If f$="*** Lines ***"
Repeat
f2$=Edit$(100)
Until Eof(0) OR Left$(f2$,3)="***"
If NOT Eof(0) Then NPrint f2$
Else
NPrint f$
EndIf
Wend
CloseFile 1
EndIf
CloseFile 0
EndIf
KillFile path$+"BB.Modules.config"
f$=path$+"BB.Modules.temp"+Chr$(0)
f2$=path$+"BB.Modules.config"+Chr$(0)
Rename_ &f$,&f2$
If OpenFile(0,path$+"BB.Modules.config")
FileOutput 0
FileSeek 0,Lof(0)
NPrint "*** Lines ***"
NPrint al
CloseFile 0
EndIf
Return
.checkval
If al<5 Then al=50
If al>200 Then al=50
Return